On the querying interface
Well we have a choice here: Before we were conducting a find query which would return the id if it matched But we have verisons with delta changes, do we just let the find query work over the versioned data as is and return the id and all its versions if it matches? In order to search the versions data we would need to construct each version and present them in a way that is accessible to mongodb I think this is too much and the finder should simply perform operations upon the data as present in the store. I think if a field other than the find field would be useful when querying data then that could be implemented
Getting version ids of data
So to get version ids we must get fullDict[ "Versions"][ *][ 0] Maybe there is a mongodb method of this yeah so we can do a map
cursor= self.store.find(
filter= queryData,
projection= {
"versionId": {
"$map": {
"input": "$a",
"as": "versionId",
"in": { "$first": "$$versionId"}
}
}
}
)
# Watch out with large data sets, maybe this should not all be pulled into memory at once
[ tuple( doc.values()) for doc in list( cursor)]
There seems to be a thing called aggregations which may be quicker than map but i know map for now and the speed isnt too pressing